Feature Engineering হলো মেশিন লার্নিং প্রক্রিয়ার একটি গুরুত্বপূর্ণ পদক্ষেপ, যেখানে ডেটার প্যাকটিক্যাল বা স্ট্যাটিস্টিক্যাল বৈশিষ্ট্যগুলো তৈরি, পরিবর্তন বা নির্বাচন করা হয়। ভালভাবে করা feature engineering মডেলের পারফরম্যান্স অনেকাংশে বৃদ্ধি করতে পারে। সঠিক feature তৈরির মাধ্যমে মডেলটি ডেটা থেকে মূল্যবান তথ্য শিখতে সক্ষম হয় এবং সঠিক পূর্বাভাস করতে পারে।
Feature Engineering Techniques
- Missing Value Imputation (মিসিং ভ্যালু ইমপুটেশন)
অনেক সময় ডেটাতে কিছু মান অনুপস্থিত থাকে। এটি মডেল প্রশিক্ষণের জন্য সমস্যা সৃষ্টি করতে পারে। মিসিং ভ্যালু পূর্ণ করার বিভিন্ন পদ্ধতি রয়েছে:- Mean/Median Imputation: পরিসংখ্যানিকভাবে সবচেয়ে সাধারণ পদ্ধতি, যেখানে সংখ্যাগত ডেটার জন্য গড় (mean) বা মধ্যম (median) মান ব্যবহার করা হয়।
- Mode Imputation: ক্যাটেগরিক্যাল ডেটার জন্য এই পদ্ধতিটি ব্যবহৃত হয়, যেখানে সবচেয়ে বেশি বার আসা মান (mode) ব্যবহার করা হয়।
- Predictive Imputation: মডেল ব্যবহার করে মিসিং মানের পূর্বাভাস করা, যেমন, KNN বা রিগ্রেশন মডেল ব্যবহার করা।
Normalization and Scaling (নরমালাইজেশন এবং স্কেলিং)
Normalization বা Scaling ডেটার মানকে একটি সাধারণ পরিসরে নিয়ে আসে, যাতে মডেল ডেটার বৈশিষ্ট্যগুলির মধ্যে পার্থক্য বুঝতে পারে। সাধারণত ব্যবহার করা হয়:- Min-Max Scaling: ডেটাকে একটি নির্দিষ্ট পরিসরে যেমন [0, 1] বা [-1, 1] স্কেল করা।
- Standardization (Z-score Scaling): ডেটাকে গড় ০ এবং স্ট্যান্ডার্ড ডেভিয়েশন ১-এ স্কেল করা।
from sklearn.preprocessing import StandardScaler, MinMaxScaler # Standardization scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # Min-Max Scaling scaler = MinMaxScaler() X_scaled = scaler.fit_transform(X)Categorical Encoding (ক্যাটেগরিক্যাল এনকোডিং)
মেশিন লার্নিং মডেলগুলির জন্য ক্যাটেগরিক্যাল ডেটা (যেমন, লিঙ্গ, শহর নাম) সংখ্যায় রূপান্তর করা প্রয়োজন। কিছু প্রচলিত এনকোডিং পদ্ধতি:- One-Hot Encoding: প্রতিটি ক্যাটেগরি জন্য একটি বাইনারি কলাম তৈরি করা (0 অথবা 1)।
- Label Encoding: প্রতিটি ক্যাটেগরি মানকে একটি একক পূর্ণসংখ্যায় রূপান্তর করা।
- Target Encoding: টার্গেট ভ্যারিয়েবলের গড় মানের সাথে ক্যাটেগরি মান মেলা।
from sklearn.preprocessing import OneHotEncoder, LabelEncoder # One-Hot Encoding encoder = OneHotEncoder() X_encoded = encoder.fit_transform(X) # Label Encoding encoder = LabelEncoder() X_encoded = encoder.fit_transform(X)- Feature Extraction (ফিচার এক্সট্র্যাকশন)
ডেটা থেকে নতুন বৈশিষ্ট্য তৈরি করা। এটি সাধারণত উন্নত মডেলিংয়ের জন্য উপকারী। কিছু প্রচলিত পদ্ধতি:- Principal Component Analysis (PCA): ডেটার প্রধান উপাদান বের করার মাধ্যমে ডেটার মাত্রা কমানো (dimensionality reduction)।
- Linear Discriminant Analysis (LDA): শ্রেণী বিভাজন ক্ষমতা বৃদ্ধি করে ডেটার মাত্রা কমানো।
- Feature Hashing: ক্যাটেগরিক্যাল বৈশিষ্ট্যগুলির জন্য একটি হ্যাশিং পদ্ধতি।
- Feature Selection (ফিচার সিলেকশন)
মডেলের জন্য সবচেয়ে প্রাসঙ্গিক বৈশিষ্ট্য নির্বাচন করা যাতে মডেলটি কম্পিউটেশনে আরও দ্রুত এবং কার্যকর হয়। এটি ডেটার কিছু বৈশিষ্ট্য বাদ দেওয়ার মাধ্যমে কাজ করে।- Filter Methods: Statistical tests বা correlation matrix ব্যবহার করে উপযুক্ত ফিচার নির্বাচন করা।
- Wrapper Methods: মডেলের পারফরম্যান্স ব্যবহার করে বৈশিষ্ট্য নির্বাচন (যেমন, Recursive Feature Elimination - RFE)।
- Embedded Methods: মডেল ট্রেনিংয়ের সময় ফিচার নির্বাচন (যেমন, Lasso Regression, Random Forest Feature Importance)।
Binning (বিনিং)
একটি নির্দিষ্ট পরিসরে সংখ্যাগুলিকে শ্রেণিতে ভাগ করা। এটি বিশেষ করে ইউটিলিটির জন্য বা ডেটাকে আরও সহজভাবে বুঝতে ব্যবহৃত হয়।- Equal Width Binning: ডেটাকে সমান দৈর্ঘ্যের বিভাজনে ভাগ করা।
- Equal Frequency Binning: ডেটাকে সমান ফ্রিকোয়েন্সির বিভাজনে ভাগ করা।
import pandas as pd # Equal Width Binning bins = [0, 10, 20, 30] labels = ['0-10', '10-20', '20-30'] X_binned = pd.cut(X, bins=bins, labels=labels)Interaction Features (ইন্টারঅ্যাকশন ফিচার)
দুটি বা ততোধিক বৈশিষ্ট্যের মধ্যে সম্পর্ক তৈরি করা। এটি মডেলের জন্য নতুন সম্পর্ক সৃষ্টির সুযোগ দেয়।- Polynomial Features: একটি বৈশিষ্ট্যের পলিনোমিয়াল তৈরি করা, যেমন , , ইত্যাদি।
- Feature Cross: দুটি বা ততোধিক বৈশিষ্ট্যের গুণফল তৈরি করা।
from sklearn.preprocessing import PolynomialFeatures poly = PolynomialFeatures(degree=2) X_poly = poly.fit_transform(X)Date and Time Features (তারিখ ও সময় বৈশিষ্ট্য)
যদি ডেটাতে date/time বৈশিষ্ট্য থাকে, তবে তা থেকে নতুন বৈশিষ্ট্য তৈরি করা যায়, যেমন:- Day of Week: সপ্তাহের দিন বের করা (যেমন, সোমবার, মঙ্গলবার)।
- Month/Year: মাস এবং বছর বের করা।
- Elapsed Time: দুটি তারিখের মধ্যে সময় পার্থক্য গণনা করা।
df['day_of_week'] = df['date_column'].dt.dayofweek df['month'] = df['date_column'].dt.month
সারাংশ
Feature Engineering হল ডেটা বিশ্লেষণের একটি গুরুত্বপূর্ণ অংশ, যেখানে ডেটার বৈশিষ্ট্য পরিবর্তন, তৈরি বা নির্বাচন করা হয় যাতে মডেলটি সঠিকভাবে শিখতে পারে। উপযুক্ত feature engineering মডেলের কার্যকারিতা উল্লেখযোগ্যভাবে বৃদ্ধি করতে পারে। বিভিন্ন পদ্ধতি যেমন Missing Value Imputation, Scaling, Categorical Encoding, Feature Extraction, এবং Feature Selection প্রয়োগ করা হয়। এই পদ্ধতিগুলির মাধ্যমে আপনি ডেটাকে আরও কার্যকরীভাবে মডেলে রূপান্তর করতে পারবেন।
Read more